#pragma once

#include "Shape.h"

class ShapeFacade
{
public:
    ShapeFacade(Rectangle *rectangle, Circle *circle, Square *square)
    {
        this->m_rectangle = rectangle;
        this->m_circle    = circle;
        this->m_square    = square;
    }

    virtual ~ShapeFacade()
    {
        delete this->m_rectangle;
        delete this->m_circle;
        delete this->m_square;
    }

public:
    void operation()
    {
        this->m_rectangle->drawRectangle();
        this->m_circle->drawCircle();
        this->m_square->drawSquare();
    }

protected:
    Rectangle *m_rectangle;
    Circle    *m_circle;
    Square    *m_square;
};